﻿/*
 * 显示和隐式转换
 * explicit implicit
 */

long l = 1l;

int a = (int)l; //显示转换

long b = a; //隐式转换

// 手动设置隐式转换 
string value = "hello world";
MyClass myClass = value;
value = (string)myClass;

class MyClass
{
    public MyClass(string value)
    {
        this.Value = value;
    }
    public string Value { get; set; }

    // 配置隐式转换 固定写法  将字符串隐式转换为类
    public static implicit operator MyClass(string value)
    {
        return new MyClass(value);
    }

    // 配置隐式转换 固定写法  将类隐式转换为字符串
    //public static implicit operator string(MyClass myClass)
    //{
    //    return myClass.Value;
    //}

    // 配置显示转换 固定写法 将类显示转换为string
    public static explicit operator string(MyClass myClass)
    {
        return myClass.Value;
    }
}